package com.dousb.cloudlibrary.model.vo;


import com.baomidou.mybatisplus.annotation.TableField;
import com.dousb.cloudlibrary.model.entity.Comment;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * CommentVO
 *
 * @author 豆沙包
 * @version 1.0
 * @since 2025-10-12  15:21
 */
@Data
public class CommentVO implements Serializable {
    /**
     *
     */
    private Long id;

    /**
     * 评论内容
     */
    private String content;

    /**
     * 用户ID
     */
    private Long user_id;

    /**
     * 主题ID（文章/视频等）
     */
    private Long topic_id;

    /**
     * 主题类型
     */
    private String topic_type;

    /**
     * 父评论ID
     */
    private Long parent_id;

    /**
     * 根评论ID
     */
    private Long root_id;

    /**
     * 点赞数
     */
    private Integer like_count;

    /**
     * 回复数
     */
    private Integer reply_count;

    /**
     * 创建时间
     */
    private Date create_time;

    /**
     * 更新时间
     */
    private Date update_time;

    /**
     * 子评论
     */
    @TableField(exist = false)
    private List<CommentVO> children;

    /**
     * 评论用户信息
     */
    @TableField(exist = false)
    private UserVO user;

    /**
     * 包装类转对象
     *
     * @param commentVO
     * @return
     */
    public static Comment voToObj(CommentVO commentVO) {
        if (commentVO == null) {
            return null;
        }
        Comment comment = new Comment();
        BeanUtils.copyProperties(commentVO, comment);
        return comment;
    }

    /**
     * 对象转包装类
     *
     * @param comment
     * @return
     */
    public static CommentVO objToVo(Comment comment) {
        if (comment == null) {
            return null;
        }
        CommentVO commentVO = new CommentVO();
        BeanUtils.copyProperties(comment, commentVO);
        commentVO.setChildren(new ArrayList<>());
        return commentVO;
    }

}